{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8067a7d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\liangcheng\\AppData\\Local\\Temp\\ipykernel_15472\\2950393317.py:18: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n",
      "  df['is_prev_valid'] = df['is_valid'].shift(1).fillna(False)\n"
     ]
    },
    {
     "data": {
      "image/png": "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IS0tTQ6HQwMHDpQxRklJSUpJSVFoaKjeffddnTp1SqdOndL111+voUOH6tSpU9ZrzpTb9QBnyunCZ0n64Ycf1LNnTz311FPavn27tm/frptvvllHjx7Vb7/9pquvvlqtWrXSlClTclw+NTVVw4YNkySVKVNGGRkZWrJkiZYuXaqyZcuqbNmyyszMVOfOnVW2bFkFBAToxhtvzHFd7733nj7//HPNnj3bOmLw888/64knntDUqVOVnp6ul19+WW3atNGpU6c0fvx4jR8/XpIUERGhJ598Un///bc6duyo7t2753kb5CQjI8PtWpOPPvpI9evX16RJk7Ry5UrVr19f9evX18KFCxUVFWVdlzFjxgzrZ/Dgwdq/f3+e3/N8/v33X0myQkVCQoLi4uKUlpam9PR0t9dOnz5dTZo0UatWrdyWX7hwoX7++Wf9888/WrJkiRwOh1544QUrmGzZskXXXnut0tLSJJ0+EnS2xYsXq379+po7d64kad68efr11181atQo7d27Vw0aNNDq1at16tQp3XnnnerWrZv27dtXYNsBACRJBgBgjDFm7969plq1auaNN94wGRkZZseOHUZSnn7atWvnti4/P7/zLtOwYcMc+7FmzRozceJE63FycrLp0KGDCQkJMU6n04wbN+6c4xg2bJgJDQ01ksy+ffvMggULTOXKlc2BAwfMoUOHzKFDh4zT6TRLliwxhw4dMvv37zf79++3lm/Xrp258cYbzV9//WXKlStnHnvsMbf1jxkzxhqDt7e38ff3N3v27DFPP/206du3rxk1apSRZP755x+35U6ePGmSkpLc2urVq5fnbSzJ+Pr6WsvOmTPH1KpVy219devWNTNnzjT333+/ufzyy43L5bKeO3XqlJFk/vjjj3Nuv/nz5xtJZvr06W4/U6dONW+88YY5evSoNZ5q1aqZPn36mMOHDxtjjAkJCbH62qdPH2OMMUFBQebrr782VapUMQsXLszxPWvVqmUeeeQRY4wxAwYMsGosyXz22Wembt26Zv/+/cbb2zvXfs+dO9e0b9/eTJ482Xh5eZmBAweaUaNGmfr165tbbrnFJCcnm2effdbUr1/fREVFnXMbAMCFIFgAwP9kZGSYiRMnGm9vbzN27FiTkZFhjh07ZhITE83JkydNp06dzLvvvmtOnjxp/vOf/5j333/fnDx50sTHx5u4uLhzrrtPnz5mwIAB+epPamqqWb16tbnrrrtM5cqVzejRo03nzp1N+fLlze23327ef/99s3HjRnP06FGTmppqjDHm008/NU6n03zwwQdGktm1a5e55JJLzIsvvui2bqfTadauXZvj+7Zr185069bN/Oc//zF169Y1p06dcnv+8OHDZv369SYhIcF0797dLQQZY0xCQoKRZFasWGG++OILM378eNOpUyfj5+dnFixY4PbamjVrmtGjR1uB51w/e/fudQsr8+fPzzFYPPHEE8bpdJqvvvrK7bnExEQjyfz999/n3O5ZwSIoKMjtp2zZssbpdJrt27dbr124cKEJDAw07du3N8acDhFffPGF2/qCgoLM+vXrzUcffWTS09Ozvd/BgweNJNOpUyfz9ddfZwsWixYtMmFhYWbEiBGmXLlyZsqUKeaNN94wu3fvzrYul8tlVq1aZbp27WqGDh1qypYta2699VaTnJxsjDEmJSXF7Nu375zjB4ALxTUWAPA/TqdTTz/9tK688ko1bdpUTqfTOpUoIyNDLpdL6enpOnXqlNv/S8o2u87Ro0dVsWLFfPdh5syZ2rx5s3bs2KFNmzbpkksu0cCBAzVu3Dg988wzeuWVV5SZmalZs2Zp4sSJ1jSmQUFB+vPPP3XDDTfonXfesS5k9vLy0siRI7PN3HQ+q1atUmZmpnx8fPTvv/+qRo0a1nOVK1dW5cqV9dlnn2nPnj164oknJEnLly/XypUrtW3bNkmnz/Fv1KiRmjZtqh49emjkyJFq3ry52/vExsaqTp06bjNq5Yf53+lqZz6+/PLLtWrVKqWkpGjAgAHW6UFZpxL5+fnlad1ZM4CdS79+/dSsWTMdOXLEeg9/f39Jp2eMeuutt3Ty5Em99tprqly5sr7++mtJp2cNGzdunKTT18NI0rZt2/TSSy8pIiJCL7zwgl544QVJUkBAgPr06aNVq1YpPDxc27dvV3p6urp27erWl6NHj2rw4MGaMWOGFi9erN69e+vGG2/U3Llz1bZtW/Xr10916tTRkCFD9MEHH2S72B0APMU1FgBwluuuu06xsbGSpEsuuUQhISEKCQnR6tWrNWTIEIWEhGjr1q165JFHrOemT59uLZ+enq5KlSrplVdeOef7uFyubFPShoSEKD4+Xv369dOff/6prVu3aujQoQoICNBHH32k+Ph4NW/eXFOnTtXOnTu1e/duffXVV1qyZImqVasmf39/PfDAA9b6MjMz1bhxYx07dkx//fWX9SNJe/futR5v375dUVFRbsuNHz9e3t7eeumll7L1fcuWLXrggQc0bdo0eXl56d9//9WxY8fk7++voUOH6oYbbtCwYcP022+/6dlnn9WGDRvUsGFD60t31nZKTExUpUqVrOlXz/WT0+xOe/fuVfny5a2fXbt2yeFw6Prrr1d4eLjmzZunn3/+WVL+g0VeNWzYUO3atdOpU6d08uRJuVwuxcXFyeVyWe/l4+OjlStXaufOndbYs8ycOVNBQUHq3bu3/vjjDx0+fFjjxo2TOX1Wgbp3765p06YpPDzc2uYzZ87UpZdeKun079HMmTPVuHFj+fn5ad26dWrZsqV2796tFi1aaNSoUUpOTtazzz6riIgI3XLLLWrXrp3eeeedAt0OAMCpUABwlvT0dFOzZk3z2WefmZo1a5rZs2cbY06fZrN8+XJjzOlz6bNOJapbt66ZMWOGtfzRo0eNJPPNN99YbX369MnxmoHKlStne/9HHnkkX9cddO/ePds6YmJijCSzceNG4+3tbQICAtxO65Fk/P39TVBQkAkMDDS+vr6ma9euxpjTp0K1atXKGGPMk08+acqUKWNiYmKsdScmJho/Pz/jdDpNhQoVjJeXV7brRV555RXTrl07c+TIEdOoUSNTp04d8+OPP7q9Jioqyjo16ZNPPjEhISEmKioqx5/evXubgQMHui0/f/58U6NGDXP06FHrJyIiwqqXMcZce+215qabbnLbJgkJCdm219nrzc/uMTMz0+zatcvs37/frS6LFi0yxpw+Feq7774z9913n3nooYfcll2xYoUpU6aMueOOO8yTTz5pYmNjrVOhfvrpJ/PKK68YY05fH+Lv728GDBhgRowY4baOU6dOmZYtW5pp06YZY4xZtmyZuf76683QoUNNWFiYueOOO8ySJUvM1Vdfbd566y1jjDGzZ892O6ULAAoCp0IBwFkWLVqkjIwMdenSxbonwJ49exQdHa0pU6aoQYMGio2NtW5YJv3/FKXS6fsqSKePdpypX79+bv9K7HK5rH9FP9OoUaP01FNPydfX13r/hIQE1a1bVytWrNBVV10l6fRRhVOnTrndFO1s1atXzzY7kXR6FqMVK1aoffv2OS5XuXJlSdLTTz+td999V+PGjdPM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2LiAvOJvwB4DBw40Dz30kBkwYEC27X/gwAETFhZmEhMT87XOmJgYU716dfPtt99me+7jjz821113nTHGmNjYWHPZZZeZjz/+2AwdOtSMHDnygsdRnBX2fnjnzp2mVq1abs+fOnXKGGNMrVq1zKeffmpuueUWY4wxL774YkEPD8jXd+jzBgtjjMnMzDRNmjQxw4cPN3Xr1jVdunQxb731lqlWrZp56623jDHGNG3a1LNeF7KSGCyOHz9uKleubBo0aGB9oCUlJZlatWqZmTNnXvB6O3XqZBYsWJCtPTMz0zRs2ND88MMPZu/evebaa681q1evNvfee69ZuHChiYyMvOD3LM4KYqeydu1aU79+fev3c+DAgWbAgAHGmHPvcNipoCjgb8Aea9asMTVq1DAJCQk5BosXXnjBPPbYY/la5wsvvGDKlCljHnzwwRyfv/baa82SJUusx127djX+/v5mypQp5pNPPsn3GIq7i7Ef/uCDD8ztt9+e4+tq1aploqOjzXXXXWd++OEHs3Llygt+TyA3+fkOnadrLLy8vOTr66tXX31VK1eu1O+//65atWrpzjvv1J9//lmwh1CQZ08++aRuvvlmtWrVymobM2aM0tLS5O3trW+++UYulytf6/zll18UExOj22+/PdtzS5YsUdWqVdW6dWuVL19eJ06c0PHjxxUYGKjIyEhdeumlHo+puDn7NARJSk5O1sMPP6yXX35ZwcHBeVqPr6+vpk+frsDAQElSs2bNrNMQypUr53Zqw+TJkzV69GhrJrYrrrhCJ06c0I8//qirr766YAcInAd/A/Y4deqUHnzwQb377rsqX758tuczMzM1ffp0PfTQQ/la79NPP605c+boo48+0vLly92e+/PPP/XPP//oxhtvtNq++OILHTp0SCdOnFBwcLDq1q2ryZMnX9igiqGLsR/etGmTNm3apODgYFWqVEkjR460JswxxujIkSMKDAzUqlWr1Llz54IbHC5IaTsd82x5vng76w/DGKMpU6YoIiJCYWFhmjZtmiRZ593j4li7dq1Wr16tV1991Wrbs2eP/vvf/yoiIkK7du3SM888o5tuuilfH2pTpkzR4MGD5eWV/VdjypQp1ixgwcHBqlmzpu655x7VrVtXV1xxheeDKoYKaqdy9dVXq127dpKkY8eOadasWbr55puzve7sHQ47FdiNvwF7jBs3Ti1atFD37t1zfH7t2rUKDQ1Vo0aN8rXegIAA9e/fX0OGDNGsWbPcnvvwww/Vu3dvt+nls/b9ZcuW1XvvvafRo0frv//9bz5HUzxdrP3w33//rZ49e2rLli1auHChpk2bpo8++kiS1L17d7Vr107XXXedwsLCSvV3sTOvc+nVq5fbNSkdO3Y87/Lnus4ly+LFi9WhQwe35bjO5Sx5PQxSp04d8++//5patWqZd955x5w8edI0aNDArFu3zhhjzBVXXHEhR1cumpJ0KtTJkydN/fr1zYoVK4wxxjoEPmbMGFOjRg1z8uRJY4wxCQkJJiQkxKxatSpP6z1+/LgJDAw0J06cyPbc9u3bTXh4uMnIyLDaXC6XSUhIMGPGjDHffPONqVOnjpk0aVIBjLB4yOk0hN27dxsfHx/TunVrM2rUKNOsWTPTs2dPk5mZmad1vv/++6Zs2bKmc+fOOT5/1113mTfeeMN6PHjwYFOmTBnz1ltvWaclAhcLfwP2qV27tvH39zdBQUEmKCjIlClTxpQtW9YMHjzYGGPM/fffb1544YU8r+/pp582a9assR6/9NJLpk+fPm6vqV+/vlm9enW2ZadNm2b2799vrrvuOhMdHW1q1659gaMqPuzYD2cZM2aMW23i4uLMm2++adavX28uvfRSM2zYMA9GVjydfTpmeHi4+eOPP6zTJ5OSks67jnOdcmmMMV999ZUpV66cadeundtypeF0zAI/FUqSGjVqpAoVKmjUqFEaPHiw/Pz8NGLECE2ePFmpqak6depUoYUfuMvtX6r279+vjh07ys/PT5JUvnx51a9fX//880+e1vvpp5/q2muvVUhISLbn+Jcqd7mdhjB37lxVrlxZq1ev1ujRo7V+/Xp9//33+vbbb/O03rvvvlsff/yx/vzzT7399ttuz504cUKff/657rnnHqvtnXfe0dGjR+VyuXTFFVeoUaNGevLJJwtmkMA58Ddgr++++07bt2/X1q1btXXrVvXq1Utjx47V2LFjJUlfffWV2rdv77aMy+VSXFxcjvedqlGjhh588EFt3rxZW7Zs0Xvvvae+fftaz+/atUt79uxR69atsy27f/9+VatWTcHBwfrjjz9KxX2t7NgPZ6lUqZIOHDhgPS5fvrxiY2O1fPly3XfffVq6dGmp+hfzs0/HPHDggIwxaty4sXX6ZF6mQD7XKZf//POPHn30UeusjbOVxtMxc5PnYLF8+XI5nU63D/Q777xTS5culZeXl4YPH665c+dq69athdFPnGHhwoX6/PPPrV/+hQsX6uGHH9aMGTN08uRJ63Uul8v6wM+Ljz/+ONepAnN7buHCherfv79OnDiha665ptQchi2snYqvr6969OihsWPHaubMmW7P5bbDKe07lYLk6V2HS9O5tfwN2Kt69eqqXbu29RMQEKCwsDCFhYUpOjpaBw8eVMuWLd2W2bt3r0JCQhQfH59tfY888ohuuukmdenSRT169NATTzyh2267zXp+7dq1atasmVXXLNu2bbNOYRs0aJDuvfde3XvvvYUw4qLlYu2HT548qcsvv9xtnRs3blStWrWsxytXrlSXLl104sQJNWvWTNWqVVNsbGwBjLJ4OPt0zE2bNikzM1PVq1eXv7+/br/99nxvj7NPuQwNDdUvv/yS46mFppSejpmrvBwC+eOPP8yrr75qPd63b5955JFH3F7jcrnMCy+8YMLDw/NxcOXiKUmnQu3bt8/ExMRYP3369DGvvfaa2bBhgylXrpxZvHix2bdvn3n66adNxYoVrUOAsbGxbqcynSklJcX4+PiY6OjobM9FR0cbHx8f69DumbKmF+zdu7dZunSpqVWrVsENtAjL7TQEh8PhNntHZmamqVq1qlm6dOk51/fmm2+6zcT1wQcfmObNm7u9plOnTjnOMrJixQqzceNGc++995rVq1eba6+91uzdu9fDERYvOU11mpaWZho3bmzWrl173uUzMzPNLbfcYsLDw03NmjVNw4YNzZEjR4wxpz/bgoKC3KY5HTdunDHGlOqpTvkbQGl2MffD119/vRk4cKD55ZdfzKRJk4y3t7d1Grox/78fHjZsmJk2bZqpX7++SUhIKKSRFy05nY45YcIE07FjR7N161bz+++/m5YtW+Y6y1luzj7lMsvs2bOznQpVGk7HLPDpZjdu3GhuueUW6xzZAwcOmL59+xpjjJk5c6Z58803zZQpU8ykSZNM5cqVPeh64SlJweJsZ04z+Pnnn5smTZoYPz8/07hxY/Pjjz9ar5NktmzZkuM6vv3221xrN2PGDHPVVVdla9+6dav55ptvjDHGfPnll6ZChQpmzJgxng2mmCjoncqyZctMxYoVzZo1a8xff/1lrrjiCvPKK69Yz58r+JXmnYoxOU91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B6dCweJyuXTo0CEdPnxYHTp00Icffqhy5crprrvu0p9//slUawUsOjpa8+bN01dffaXff/9dGRkZCgoKUmBgoLy9vVWmTBlJ0u+//+52HigKDjWwF9vfftTAfp988onbzFzvvfeemjRpouXLl2vIkCG666671KJFC7Vp00b79u2zu7slSlpamjZs2KChQ4da0y3PmjVLBw8eVP/+/fXII4/ommuuUZ06dbRr1y67u1ssECxKqRMnTuiOO+6wZkTImkrN19dXn3zyiSpUqKB9+/bJ399fzZo104oVK1StWjW7u11iEersRw3sxfa3HzW4+JiZy16EuoLHsbZSyt/fXw888IDuv/9+vf/++1b7gw8+mO21QUFBOnr0KMGigJwv1Hl7e6t9+/by9/dXxYoVlZSUxA69gFEDe7H97UcNioa//vpLPXr0UNu2bSVJH330ETNzXSTcy6twECxKKV9fX9188816/PHH1bt3b6s9p2BRqVIlHTx4UE2bNr2IPSy5CHX2owb2YvvbjxoUDT179lTXrl2tx1nn/KPwEeoKBxEM5xUeHq4DBw7Y3Y0SIyvUlStXTr1797Z+cpIV6lCwqIG92P72owZFAzNz2adnz5764IMPrMdVqlQhVBQAggXOq2rVqswWYhNCnf2ogb3Y/vajBoWHmbnsQ6grHASLUi4v1+7XqlVLO3bsuAi9wdkIdfajBvZi+9uPGhQepn23D6GucHCNRSk2b948paSkaO7cued8XfXq1bVp06aL1KvSI6+hjhvzFB5qYC+2v/2ogf3q1q2rMWPGaMyYMeecmYsL6AtWVqibN2+eJk+ezHTLBYRgUYotWrRI119/vVatWiXp9FSDPXr0kCRlZGTI5XJJkmrXrq0RI0bY1s+SiFBnP2pgL7a//aiBvZiZy36EuoJHsCjFvvzyy1yfu+yyy6xgUb16dT366KMXq1ulAqHOftTAXmx/+1EDezEzl30IdYWHG+QBRczVV1+tr776ig8xG1EDe7H97UcNLp6aNWtq79691uOKFSvq6NGjbjeqvfXWWzVw4EB169bNxp6WHKmpqfryyy9zDHVnb/v27dvrzTffZMr9POLi7VJswoQJio2NtbsbOMvGjRvZmduMGtiL7W8/alC0MDNXwWK65cJDsCjFxowZo8TERLu7USoR6uxHDezF9rcfNSg+mJnLPoS6/CFYlGK+vr7y9fW1uxulEqHOftTAXmx/+1GDooFp34s2Ql3+cPE2YANCnf2ogb3Y/vajBvZjZi57Md1ywSNYAAAA2ICZuexDqCscBItSbsGCBee9QM8Yo9TUVA0cOFD+/v4XqWcAAJRsTPtuH0Jd4SBYlHJLlizJdijc5XJpw4YNatOmjby9vWWMUUpKim699VaCRQEi1NmPGtiL7W8/alB0bdy40e4ulGiEusLBfSxKscDAQEVFRaly5cpu7enp6fLz89OJEyeYbrCQBAYG6vLLL89zqFuxYoUqVqxoU29LJmpgL7a//aiB/SZMmKDBgwcrJCTE7q4ABYJgUYrlFizS0tJUtmxZgkUhItTZjxrYi+1vP2pgP19fX0VFRalmzZp2d6XUIdQVDqabBYoQcr79qIG92P72owYXDzNz2YfplgsHwQLZpKWlyRijzMxMu7sCAABQ4Ah1hYNgUYqdOevBmdLT01WlShWChQ0IdfajBvZi+9uPGgC4UMwKVYoFBQUpPT09W3tISIgOHjxoQ49KD0Kd/aiBvdj+9qMGRQMzc6EkIViUYocOHbK7C6UWoc5+1MBebH/7UYOigWnf7UOoK3jMClWKzZkzR5LUv39/+fj4uD33119/6fXXX9eMGTMkSVFRUapXr54cDsfF7iYAACUSM3PZh+mWCwfXWJRiGRkZmjt3rmrUqKF7771Xy5YtU2pqqowxGjRokAIDAyVJx44dU/fu3XXkyBGbe1xyzJkzR3PmzFFaWlq25/766y8NGjTIehwVFcUsLYWAGtiL7W8/alB0sa0vjk8//VRr1qxx+/nmm2/kcDi0fPlyrVmzRmvXrtXPP/9MqMgjgkUpNmjQIK1du1aRkZFq1aqV5s6dq9TUVKWnp6tbt24aN26cJOmjjz7SbbfdpipVqtjc45KDUGc/amAvtr/9qAGQHaHOMwSLUi4xMVGhoaF64IEHtGTJEr355pt67733VKVKFX311VeSpEceeUTe3t7KyMiwubclB6HOftTAXmx/+1GDoouZuVBccY1FKdapUycNHDhQd9xxh9UWEhKiu+66S4mJiVq3bp1iYmIkSVWrVtW+ffvkdDrt6m6Jk5iYqPLly1uPx44dq5CQEPn7+ysoKEh9+vSRdPomPiNGjJC3N3MtFDRqYC+2v/2ogb3KlSun6OhohYeHu7XHxsbqsssu07Zt2zgFp5Dkdn1LUlKSAgMDdezYMVWoUMGm3hVfBItS7O6779avv/6qli1bSpIcDofWrVunXbt2SZIqVqyocePGycvLS88//7yOHTtmZ3dLFEKd/aiBvdj+9qMG9gsPD9fPP/+smjVr2t2VUodQVzj4p4dS7O2339batWuVmpoq6fRMCF27dtVnn32mm2++WT179tTvv/8uSerVq5edXS1xwsPDNWHCBH377beSToe6kJAQvfXWW5JOh7pp06bJy8tLaWlp7MwLATWwF9vfftTAfkz7bh+mWy4cHLEoxb744gulpqaqWrVqVpvD4VDv3r21ePFit6llU1JSdM0112SblhYXJiEhIVuoczqd8vb21s0336x7771Xfn5+kqRTp05p1qxZdna3RKIG9mL7248a2I9p31HScMSiFFu5cqXeeecdXXPNNSpTpozVHhcXp+eee06SrA+wlJQULV++nMOCBeS7775TZmamatWqZbVlhbrw8HA9+OCDVntKSorS0tIIdQWMGtiL7W8/amC/jIwMLViwQM8884y6d++um266SZ07d5aPj48GDRpknaqcNTPXhg0buIi+gBDqCgdHLEoxY4xuuukmBQUFad68eTpx4oR++uknDRo0SN9//73mzZunIUOGcPFSIXj00UdzDHWbNm1SixYtJBHqChs1sBfb337UoOg4fvy4lixZolWrVmn27Nny8/PT66+/rscff1z+/v6aOnWqDh8+bM3UBc/NmDFDCxYsUGRkZLZQd+2116ply5aaNGmSjh07ptatWxPq8sqgVDtx4oR57rnnTIsWLUxYWJi58cYbTVhYmDl69Kh5+umnTeXKlc19991nvvvuO7u7WqK4XC7Tq1cvc9dddxljjDl+/Lj54osvTHh4uImOjjajRo0yx48ft7mXJRs1sBfb337UoGhISEhwezxmzBjz1ltvmZkzZ5rFixdb7aNHjzbp6ekXu3sl3rFjx8x7771nevfubeLj401qaqoZP368SUpKMsYY8/bbb5uRI0fa3Mvig/tYlGJ///23Wrdura+++krPPfecjhw5oqVLlyooKEhhYWGaOHGi/v77bzVs2FDvv/++3d0tURwOh+bMmaPq1aurZcuWatCggd5//32lp6crMDBQJ0+eVKNGjayjRyh41MBebH/7UQP7derUScuWLXNrmzx5sqKiovTdd9/pqaeestrfe+89TsUpYNzLq+BxKlQp9vHHH2vjxo1644035OX1/xlz5MiReumll2zsWcn3999/68Ybb1TZsmX1wgsv6MYbb5SXl5fq1aunf/75R9LpCyvff/99/f7775o3b57NPS55qIG92P72owb2Y9p3+zDdcuEgWMDicrncAgYKD6HOftTAXmx/+1ED+zEzl30IdYWDYAFJ0uuvv64PP/xQ48ePV5cuXSRJs2fPVuPGja2L+FB4CHX2owb2YvvbjxpcfEz7bh9CXeFgutlS7MMPP1TZsmXlcDhUv359tW3bVnfccYd8fX3VsWNHHTx4UG3atNHBgweVkpKifv362d3lEolQZz9qYC+2v/2ogT2Y9t0+TLdcODhiUYrdfffd8vHxcfsXqhMnTuibb77RjTfeqMjISFWqVElVq1ZVfHy8PvnkExt7W7KcGeokad26dZo3b162UNesWTNCXSGhBvZi+9uPGtjPMO27bZhuuXBwxKIUmzdvnvbv36+KFSvK19dXiYmJat26tYYNG6ahQ4dq5cqVatCggZo1a2Z3V0uclStXZgt1HTp00DfffCPp9L9Wbdq0Sfv371d8fDw79EJADezF9rcfNbBf1sxcr732mlq2bKmYmBhdc8012Wbm6tGjhwYOHKg2bdrY3eUSY8qUKdq3b1+OoW7mzJmEugvEEYtSrmXLloqMjFTFihWtZG6MkcPhsP578uRJHTp0yOaeljw5hbpbbrmFUHcRUQN7sf3tRw3sxcxc9oqNjdVrr72mb7/91gp1P/zwg3bs2KHXXntNc+fOJdTlE8GiFDPGKCYmRl27dtWKFStUvnx5BQUF6corr9Qvv/yiFi1aaNOmTbrqqqu0fft2u7tb4hDq7EcN7MX2tx81sBczc9mHUFdILt69+FCUxMbGmq5du5rk5GTz/PPPm8DAQDNs2DBjjDEBAQGmffv21n/9/f1t7m3J43K5THR0tLnkkkvM33//bQ4dOmRSUlJMo0aNTHJysmnUqJFJSkoyl112md1dLbGogb3Y/vajBkVPZmam3V0oNT766CMzdOjQbNt8xIgRNvWoZGBeuVIqODhYXbt21TXXXKNdu3ZpxowZeuONNySdvrvngAED9N///levvvqqpk6dqtjYWJt7XHLExcWpe/fuqlKlim655RZdeeWVeu2111S2bFnt3btX3bt31969e9WjRw/t3r3b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",
      "text/plain": [
       "<Figure size 800x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 读取文件\n",
    "file_path = \"../../../data/恒生医疗ETF_159506_5分_20240601_20250606.csv\"\n",
    "df = pd.read_csv(file_path, encoding='utf-8')\n",
    "\n",
    "# 清理列名\n",
    "df.columns = [col.strip() for col in df.columns]\n",
    "\n",
    "# 计算实际涨幅\n",
    "df['change_pct'] = (df['收盘'] - df['开盘']) / df['开盘']\n",
    "\n",
    "# 条件：涨幅在 0.5% 到 1% 之间（即 50bp 到 100bp）\n",
    "df['is_valid'] = (df['change_pct'] > 0.005) & (df['change_pct'] < 0.06)\n",
    "\n",
    "# 剔除连续有效K线（只保留第一次）\n",
    "df['is_prev_valid'] = df['is_valid'].shift(1).fillna(False)\n",
    "df['is_selected'] = df['is_valid'] & (~df['is_prev_valid'])\n",
    "\n",
    "# 找到满足条件的K线索引\n",
    "selected_indices = df.index[df['is_selected']].tolist()\n",
    "\n",
    "# 计算未来n根K线上涨概率（收盘高于当前收盘）\n",
    "def calc_up_prob(n):\n",
    "    up_count = 0\n",
    "    total_count = 0\n",
    "    for idx in selected_indices:\n",
    "        if idx + n < len(df):\n",
    "            if df.loc[idx + n, '收盘'] > df.loc[idx, '收盘']:\n",
    "                up_count += 1\n",
    "            total_count += 1\n",
    "    return up_count / total_count if total_count > 0 else 0\n",
    "\n",
    "# 统计不同周期的上涨概率\n",
    "results = {}\n",
    "for n in [1, 2, 3, 5, 8, 13, 21]:\n",
    "    results[f'{n}根后上涨概率'] = calc_up_prob(n)\n",
    "\n",
    "# 转为 DataFrame 用于画图\n",
    "results_df = pd.DataFrame(list(results.items()), columns=['周期', '上涨概率'])\n",
    "\n",
    "# 绘制柱状图\n",
    "plt.figure(figsize=(8, 5))\n",
    "plt.bar(results_df['周期'], results_df['上涨概率'], color='mediumseagreen')\n",
    "plt.title('满足条件K线后的上涨概率')\n",
    "plt.ylabel('概率')\n",
    "plt.ylim(0, 1)\n",
    "plt.grid(axis='y', linestyle='--', alpha=0.5)\n",
    "for i, v in enumerate(results_df['上涨概率']):\n",
    "    plt.text(i, v + 0.02, f'{v:.2%}', ha='center')\n",
    "plt.xticks(rotation=-90)\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
